package navalgo3.Modelo;

public class Jugador {
	
	private int puntos;
	
	public Jugador(){
		puntos = 10000;
	}
	
	private void restarPuntos(int puntosARestar) {
		puntos = puntos - puntosARestar;	
	}
	
	public void hacerDisparo (Tablero unTablero, Posicion posicionDeDisparo) throws PuntosInsuficientesException{
		if (this.puntos>=210){
			unTablero.colocarDisparo(new Disparo(posicionDeDisparo));
			this.restarPuntos(200);
			this.pasarTurno(unTablero);
		}
		else {
			throw new PuntosInsuficientesException();
		}
	}

	public void ponerMinaPorContacto (Tablero unTablero, Posicion posicionDeMina) throws PuntosInsuficientesException{
		if (this.puntos>=160){
			unTablero.colocarMina(new MinaPorContacto(posicionDeMina));
			this.restarPuntos(150);
			this.pasarTurno(unTablero);
		}
		else {
			throw new PuntosInsuficientesException();
		}
	}
	
	public void ponerMinaPuntualConRetardo (Tablero unTablero, Posicion posicionDeMina) throws PuntosInsuficientesException{
		if (this.puntos>=60){
			unTablero.colocarMina(new MinaPuntualConRetardo(posicionDeMina));
			this.restarPuntos(50);
		}
		else {
			throw new PuntosInsuficientesException();
		}
	}
	
	public void ponerMinaDobleConRetardo (Tablero unTablero, Posicion posicionDeMina) throws PuntosInsuficientesException{
		if (this.puntos>=110){
			unTablero.colocarMina(new MinaDobleConRetardo(posicionDeMina));
			this.restarPuntos(100);
		}
		else {
			throw new PuntosInsuficientesException();
		}
	}
	
	public void ponerMinaTripleConRetardo (Tablero unTablero, Posicion posicionDeMina) throws PuntosInsuficientesException{
		if (this.puntos>=135){
			unTablero.colocarMina(new MinaTripleConRetardo(posicionDeMina));
			this.restarPuntos(125);
		}
		else {
			throw new PuntosInsuficientesException();
		}
	}
	

	public void pasarTurno(Tablero unTablero) throws PuntosInsuficientesException{
		if (this.puntos>=10){
			Turno unTurno = new Turno();
			unTurno.pasarTurno(unTablero);
			this.restarPuntos(10);
			}
		else{
			throw new PuntosInsuficientesException();
		}
}
	
	public boolean tienePuntos() {
		return (this.puntos>0);
	}
}